// cf-286d tourist
// not ac yet
// ml:run = $bin < input
#include <iostream>
#include <algorithm>
#include <vector>

struct data
{
    int l, r, t;
};

int const maxn = 400007;
int a[maxn], d[maxn];
int n, m;

std::vector<data> da;
std::vector<int> v(0);
std::vector<int> qn;

int main()
{
    std::ios::sync_with_stdio(false);
    std::cin >> n >> m;
    da.resize(m); qn.resize(n);
    for (int i = 0; i < m; i++) {
        std::cin >> da[i].l >> da[i].r >> da[i].t;
        if (da[i].t - da[i].l >= 0) v.push_back(da[i].t - da[i].l);
        if (da[i].t - da[i].r >= 0) v.push_back(da[i].t - da[i].r);
    }
    for (int i = 0; i < n; i++) {
        std::cin >> qn[i];
        v.push_back(qn[i]);
    }
    std::sort(v.begin(), v.end());

    v.erase(std::unique(v.begin(), v.end()), v.end());

    for (int i = 0; i < m; i++) {
        auto l = da[i].t - da[i].l;
        auto r = da[i].t - da[i].r;
        if (r < 0) { a[0] += r; r = 0; }
        if (l < 0) { a[0] -= l; l = 0; }
        l = std::lower_bound(v.begin(), v.end(), l) - v.begin();
        r = std::lower_bound(v.begin(), v.end(), r) - v.begin();
        d[r] += 1;
        d[l] -= 1;
    }

    for (size_t i = 1; i < v.size(); i++)
        d[i] += d[i - 1] * (v[i] - v[i - 1]);
    a[0] += d[0];
    for (size_t i = 1; i < v.size(); i++)
        a[i] = a[i - 1] + (v[i] - v[i - 1]) * d[i - 1];

    for (int i = 0; i < n; i++) {
        auto id = std::lower_bound(v.begin(), v.end(), qn[i]) - v.begin();
        std::cout << a[id] << "\n";
    }
}

